<?php

namespace core;
require 'common.php';
require 'Query.php';
define('CONFIG',require '../config.php');
use PDO;

/**
 * 数据库操作入口类
 * PDO($dsn,$username,$password)
 */
class Db{
    //1、连接对象
    protected static PDO $db;
    //2、连接数据库
    protected static function connect(string $dsn,string $username,string $password){
        static::$db = new PDO($dsn,$username,$password);
    }
    //3、静态委托
    //__callStatic 用静态方式中调用一个不可访问方法时调用
    public static function __callStatic($name, $arguments)
    {
        //3.1连接数据库
        //$dsn = 'mysql:host=127.0.0.1;dbname=tmvc;charest=utf8;prot=3306';
        $dsn = CONFIG['database']['type'].':dbname='.CONFIG['database']['dbname'];
        static::connect($dsn,CONFIG['database']['username'],CONFIG['database']['password']);
        //3.2实例化数据库
        $query = new Query(static::$db);
        return call_user_func_array([$query,$name],$arguments);
    }
}
//dump(
//    Db::table('user')
//    ->field('id,uname,password')
//    ->limit(5)
//    ->page(3)
//    ->order('id')
//    ->select()
//);
//dump(
//    Db::table('user')
//    ->insert(
//        [
//            'uname' =>'yuanxi',
//            'email'=>'aa@qq.com',
//            'password' => md5(123)
//        ]
//    )
//);
//dump(
//    Db::table('user')
//        ->where('id = 19')
//        ->update(
//            [
//                'uname' =>'yuanxi1',
//                'email'=>'aa1@qq.com',
//                'password' => md5(1234)
//            ]
//        )
//);
//dump(
//    Db::table('user')
//        ->where('id = 19')
//        ->delete()
//);
